#pragma once

#include "X.hpp"

class Y : public X, public Z {
public:

    virtual void Echo(int i);
    virtual void Echo();
    void DoEcho();
    double DoPV(double d);
    virtual double PV(double d) = 0;

    int *GetIntPtr() const;
    void SetIntPtr(int *p);

    const double& GetDoubleRef() const;
    void SetDoubleRef(double &d);

    Y *GetY1() const;
    const Y *GetY2() const;
    const Y **GetY3() const;
    const Y &GetY4() const;
    Y &GetY5();
    Y* &GetY6();

    Y *SetY1(Y *const y) const;
    Y *SetY2(const Y &y) const;
};

int PrintY(Y *y);
